接著我們先來設定一個比較簡單,設完基本上就不需要再動的東西,ConfigMap & Secret ,就是跟設定相關的東西。
為什麼是叫 ConfigMap 而不是叫 Config 就好?
因為 Kubernetes 透過 Config 來設定一些東西,因此就只好改叫 ConfigMap 。
首先先來說說 ConfigMap 如何使用,如果是暫時的、少量的設定,我們可以直接使用指令來產生就OK了。
$ kubectl create configmap <configmap_name> --from-literal=key=value ...
# 範例
$ kubectl create configmap configmap-test1 --from-literal=hello=world --from-literal=version=2.1.2
那如果要比較長期的或是大量的設定,又該如何設定呢?
Kubernetes 可以透過 YAML 文件的方式產生 ConfigMap。
config.yaml
apiVersion: v1
king: ConfigMap
metadata:
name: config-test
data:
key1: "value1"
key2: "value2"
文件必須透過以下指令產生 ConfigMap 。
$ kubectl apply -f <configmap_file_name>
# 範例
$ kubectl apply -f config.yaml
然後我們就可以執行以下指令查看。
$ kubectl get configmaps
# or
$ kubectl get cm
如果需要了解詳細內容可以透過以下指令。
$ kubectl describe configmap <configmap_name>
# 範例
$ kubectl describe configmap configmap-test
如果需要將 ConfigMap 刪除可以透過以下指令
$ kubectl delete configmap <configmap_name>
# 範例
$ kubectl delete configmap configmap-test
講完了 ConfigMap ,接著就要來講 Secret 了,雖然兩者之間在使用上差異不大,不過還是需要特別說明一下。
首先 Secrets 不能使用指令直接產生,必須經由文件產生(我知道的是這樣啦,有大佬知道什麼其他方式希望可以分享給小弟知道一下)。
還有另一個差別是 Secret 的值要必須用 Base64 加密編碼(後來我知道有另一種方式可以偷懶)。
在 Linux 下可以使用以下指令取得 Base64 編碼後的結果。
$ echo -n 'value' | base64
# Sample
$ echo -n 'value1' | base64
> dmFsdWUx
取得編碼結果後,我們就可以透過以下文件生出 Secret 了。
apiVersion: v1
kind: Secret
metadata:
name: secret-test
data:
key1: dmFsdWUx
stringData:
key2: value2
data -> 只接受 base64 編碼
stringdata -> 可接受 planetext ,並在建立時會自動編碼
# 產生
$ kubectl apply -f <secret_file_name>
# 範例
$ kubectl apply -f secret.yaml
# 列出
$ kubectl get secrets
# 詳細資料
$ kubectl describe secret <secret_name>
# 範例
$ kubectl describe secret secret-test
各位可以注意到 Secret 是不會顯示出值的,因此相當適合儲存私密的設定。
詳細設定可參考官方文件 ConfigMap 、 Secret
那麼就先到這邊,基本的設定就大概這樣,明天會介紹基本的執行單元,並且套用今天的 ConfigMap 或 Secret 。
大家掰~掰~